﻿using NHibernate;
using System;
using CRC.Inspecciones.Dominio.Clases;

namespace CRC.Inspecciones.Dominio.Controlador
{
    public class ControladorEliminarHojaInspeccion
    {
        private static String strQryExisteEntradaHistorial = "from LineaSeguimientoInspeccion lsi where lsi.Documento.Id=:idHoja";

        public void EliminarHojaInspeccion(int pIntHoja) 
        {
            ISession session = null;
            ITransaction tx = null;

            try
            {
                session = NHibernate.NHibernateHelper.GetCurrentSession();
                tx = session.BeginTransaction();
                
                //Eliminar del "historial" del salon la entrada de la hoja correspondiente
                IQuery qry = session.CreateQuery(strQryExisteEntradaHistorial).SetParameter("idHoja", pIntHoja);
                LineaSeguimientoInspeccion lineaSeguimiento = qry.UniqueResult<LineaSeguimientoInspeccion>();
                if (lineaSeguimiento != null) session.Delete(lineaSeguimiento);
                
                //Eliminar hoja
                HojaInspeccion hoja = (HojaInspeccion)session.Get(typeof(HojaInspeccion), pIntHoja);
                
                session.Delete(hoja);
                tx.Commit();

            }
            catch (HibernateException he)
            {
                if (tx != null) { tx.Rollback(); }
                session.Close();
                throw he;
            }
        }
    }
}
